package java学习.第07章_面向对象编程_进阶;

/**
 * ClassName: C_方法的重写
 * Package: java学习.第07章_面向对象编程_进阶
 * Description:
 *
 * @Author 张蛟龙
 * @Create 2023/3/6 19:08
 * @Version 1.0
 */
public class C_方法的重写 {
    /**
     *
     * 子类对父类继承过来的方法进行覆盖，覆写的操作，称之为重写
     *
     *  为什么要重写：父类的此方法不满足新的子类，
     *              子类需要升级
     *  重写的 方法名和参数列表 要一致
     *  子类权限修饰符 >= 父类权限修饰符
     *  子类不能重写子类的 private 方法
     *          因为 private 只能自己能看见 他不叫重写，
     *          只能叫又重新写了一个方法
     *  父类的返回值类型是 void 子类也必须是 void
     *               基本数据类型  子类也必须是   相同的
     *               引用数据类型  子类必须  相同/父类返回值的子类
     *  异常      父类的异常       子类必须  相同/父类的异常的子类
     *
     */
    public static void main(String[] args) {
        //由于Student是 Person子类 有构造器调用方法
        //但是Student覆盖了ability方法，所以输出的是使用机械打猎
        Student student = new Student();
        student.ability();

    }
}

class Student extends Person {
    @Override//这个注解 可以校验此方法是否是重写
    public void ability(){//重写父类方法
//        super.ability();//调用父类方法
        System.out.println("使用机械打猎");
    }
}

class Person {
    String name;
    int age;
    private String s;
    Person(){
        ability();
    }

    public void ability(){
        System.out.println("手动打猎");
    }

}
